#ifndef GNAPPWINDOW_H
#define GNAPPWINDOW_H
#include <GnMemoryObject.h>

class GnAppWindow : public GnMemoryObject
{
	enum
	{
		MAX_CLASSNAME = 64,
	};
public:
	GnAppWindow(const gtchar* captionName, guint menuID, guint width, guint height,
		gulong ulWindowStyle);

	virtual	~GnAppWindow(void);

	static gtchar* GetWindowClassName();
	static bool SetWindowClassName(gtchar* name);
	bool CreateGnWindow(int nCmdShow, GnInstance instance, GnWindowHandle parentHandle);
	GNFORCEINLINE  guint GetMenuID();
	GNFORCEINLINE gtchar* GetWindowCaption();
	GNFORCEINLINE bool IsFullScreen();
	GNFORCEINLINE guint GetWidth();
	GNFORCEINLINE guint GetHeight();
	GNFORCEINLINE guint GetWindowStyle();
	GNFORCEINLINE GnWindowHandle GetMainWindowHandle() const;
	GNFORCEINLINE GnWindowHandle GetRendererWindowHandle() const;

protected:
	static gtchar msWindowClassName[MAX_CLASSNAME];
	gtchar* mCaptionName;
	guint mMenuID;
	bool mIsFullScreen;
	guint mWindowWidth;
	guint mWindowHeight;
	gulong mWindowStyle;
	GnWindowHandle mMainWindowHandle;
	GnWindowHandle mRendererWindowHandle;
};

#include "GnAppWindow.inl"
#endif // GNAPPWINDOW_H
